
const { Wechaty,MediaMessage,Room,Contact,FriendRequest } = require('wechaty')


/**
 * 获取联系人
 * @param {contactNameList} 好友的昵称，数组类型，如果不传，默认获取所有好友 
 */
async function getContact(contactNameList){
    
    log('开始获取联系人......');

    let  contactList=[]
    let  ctl=contactNameList

    if(ctl){

        // 不是一个数组就转换成一个数组
        if(!Array.isArray(ctl)){
            ctl=[ctl]
        }
        for (let i = 0,len=ctl.length; i < len; i++){

            const contact = await Contact.find({ alias: ctl[i] })
    
            contactList.push(contact)
            
        }
        
    }else{
        contactList=await Contact.findAll();
    }

    return contactList
    
}


/**
 * 获取群聊
 * @param {roomNameList} 群聊的名称，Array|Object，如果不传，默认获取所有群聊
 */
async function getRoom(roomNameList){
    
    log('开始获取所有群聊......')

    let  roomList=[]
    let  rnl=roomNameList

    if(rnl){

        // 不是一个数组就转换成一个数组
        if(!Array.isArray(rnl)){
            rnl=[rnl]
        }

        for (let i = 0,len=rnl.length; i < len; i++){

            const contact = await Room.find({ topic: rnl[i] })
    
            roomList.push(contact)
            
        }
    }else{
        roomList=await  Room.findAll();
    }
    
    return roomList
}

/**
 * 创建群聊
 * @param {roomNameList} 群聊的名称，数组类型，如果不传，默认获取所有群聊
 */
async function createRoom(contactList){
    
    
    log('正在创群中........');

    let newRoom;
  
    if (!contactList) {
        log('没有找到好友，无法建群.........')
        return
    }


    try {

        log(`好友 ${contactList} 准备加群......`)  
  
        const room = await Room.create(contactList, '机器人创建的群')
        
        log(`群已经建好啦 : %s ${room}.......` )
    
        newRoom= room
  
    } catch (e) {

        log(`建群出现异常 : ${e.stack} .....` )
        throw e
        
    }

    return newRoom
}


/**
 * 打印好看的信息
 * @param {val} 打印的内容
 */
async function log(val,val2) {

    if(val2){
        
        console.log(`\n\n ------  `,val,val2,` \n`)
    }else{
        
        console.log(`\n\n ------  `,val,` \n`)
    }
}


/**
 * 返回多媒体消息
 * @param {params} 打印的内容
 */
async function sendMediaMsg(params) {
    return new MediaMessage(params)
}


module.exports={
    log,getContact,getRoom,createRoom,sendMediaMsg
}